package log

import (
	"os"

	"github.com/sirupsen/logrus"
	"gogs.xiaoyuanjijiehao.com/antlinker/antcms/debug"
)

var (
	_ ILogger = &logrusLog{}
)

// InitLogrus 初始化Logrus 日志
func InitLogrus() {
	if debug.Mode == debug.ModeProd {
		logger = &logrusLog{
			logrus.Logger{
				Out:       os.Stderr,
				Formatter: new(logrus.TextFormatter),
				Hooks:     make(logrus.LevelHooks),
				Level:     logrus.InfoLevel,
			},
		}

	} else {
		logger = &logrusLog{
			Logger: logrus.Logger{
				Out:       os.Stderr,
				Formatter: new(logrus.TextFormatter),
				Hooks:     make(logrus.LevelHooks),
				Level:     logrus.DebugLevel,
			},
		}

	}
}

// Logger 获取log
func Logger() ILogger {
	return logger
}

type logrusLog struct {
	logrus.Logger
}

func (l *logrusLog) InputLevel() Level {
	switch l.Logger.Level {
	case logrus.DebugLevel:
		return DebugLevel
	case logrus.InfoLevel:
		return InfoLevel
	case logrus.WarnLevel:
		return WarnLevel
	case logrus.ErrorLevel:
		return ErrorLevel
	case logrus.FatalLevel:
		return FatalLevel
	case logrus.PanicLevel:
		return FatalLevel
	}
	return DebugLevel
}
func (l *logrusLog) SetInputLevel(lvl Level) {
	switch lvl {
	case DebugLevel:
		l.Logger.Level = logrus.DebugLevel
	case InfoLevel:
		l.Logger.Level = logrus.InfoLevel
	case WarnLevel:
		l.Logger.Level = logrus.WarnLevel
	case ErrorLevel:
		l.Logger.Level = logrus.ErrorLevel
	case FatalLevel:
		l.Logger.Level = logrus.FatalLevel

	}

}
